# -*- coding:utf-8 -*-

import urllib
import urllib.request
import urllib.error
from http.client import HTTPResponse

'''
    1.获取数据
    baseurl 网页网址
    page   一共多少页
    strip  每页多少条
'''
def getData(baseurl, page, strip):
    # 创建一个列表来存网页源码信息，1页，存一个元素
    datalist = []
    # 调用获取网页信息的函数askURL()10次，然后统统存到datalist里面
    for i in range(0, page):
        # 每次获取25条，一共250条数据
        # 对网页网址url进行拼接，
        url = baseurl + str(i * strip)
        # 调用askURL()函数，获取网页源码
        html = askURL(url)
        datalist.append(html)
    return datalist


'''
    得到指定的网页内容
    url 网页网址
    打开网页，向网页服务器发送请求，获取网页所有源码信息
    根据给定的URL请求网页内容并返回html字符串。

    参数：
    url (str): 要请求的网页的URL。

    返回：
    str: 请求到的网页内容的html字符串。

    异常：
    URLError: 当请求网页时发生URL错误。

    示例：
    >>> askURL('https://www.example.com')
    '<html>...</html>'
'''
def askURL(url):
    # 定义一个字典headers
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49'
    }
    # 创建一个Request对象，用于发送HTTP请求
    req = urllib.request.Request(url=url, headers=headers, method='GET')

    # 定义一个空字符串变量html，存储网页内容
    html = ''

    try:  # 尝试执行以下代码块，如果发生异常则跳转到except部分处理
        response = urllib.request.urlopen(req)  # 打开url链接并赋值给response变量
        assert isinstance(response, HTTPResponse)  # 断言response变量是否是HTTPResponse类的实例
        html = response.read().decode('utf-8')  # 读取response的内容并解码为utf-8编码的字符串赋值给html变量
    except urllib.error.URLError as e:  # 如果发生URLError异常，将异常信息赋值给e变量
        if hasattr(e, 'code'):  # 判断e对象是否有code属性
            print(e.code)  # 打印e对象的code属性
        if hasattr(e, 'reason'):  # 判断e对象是否有reason属性
            print(e.reason)  # 打印e对象的reason属性
    return html  # 返回网页内容html

